Modern storage devices are frequently composed of non-volatile storage media such as NAND flash. Devices designed to manage requests to read and write data on the NAND flash balance performance and robustness for each operation. A computing system coupled to a storage device managing NAND flash dedicates resources to a write operation sent to the storage device until the storage device confirms to the computing system that the write operation has successfully completed. The storage device also dedicates resources to the write operation until it confirms the data in the write operation has been successfully written to the NAND flash itself. After successful completion, the resources are released for further use. It is desirable to reduce the duration of the dedication of these resources.
Unexpected power losses can cause inconsistent states in storage devices on recovery. Non-volatile storage is increasingly storing more data in the same space. For example, triple-level cell (TLC) flash is a type of NAND flash memory that stores three bits of data per cell. The amount of time and energy it takes to precisely calibrate the voltage levels in the non-volatile storage, however, increases with the density. This increases the potential for inconsistent states after a power loss, because the in-flight operations take longer to complete and are more power intensive. It is desirable to avoid these inconsistent states without requiring a client of the non-volatile storage to send a new write operation.